{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "application/javascript": [
       "IPython.notebook.set_autosave_interval(60000)"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Autosaving every 60 seconds\n"
     ]
    }
   ],
   "source": [
    "%autosave 60"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "BUCKET_NAME = \"msil_raw\"\n",
    "FOLDER_NAME = \"training_data\"\n",
    "FILE_NAME = \"ml_data_unsorted.csv\""
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import google.datalab.storage as storage\n",
    "import pandas as pd\n",
    "from io import BytesIO"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/envs/py3env/lib/python3.5/site-packages/sklearn/cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "# importing the libraries\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns\n",
    "import xgboost as xgb\n",
    "from sklearn.model_selection import GridSearchCV\n",
    "import time\n",
    "from datetime import datetime\n",
    "from scipy import integrate"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IMEI</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>Hour</th>\n",
       "      <th>Minute</th>\n",
       "      <th>Seconds</th>\n",
       "      <th>sp</th>\n",
       "      <th>EVVSP</th>\n",
       "      <th>EVGPO</th>\n",
       "      <th>...</th>\n",
       "      <th>EVIRT_Min</th>\n",
       "      <th>EVDI2</th>\n",
       "      <th>EVBMI_Latest</th>\n",
       "      <th>EVBMA_Latest</th>\n",
       "      <th>EVVAC</th>\n",
       "      <th>EVODO</th>\n",
       "      <th>EVODOH</th>\n",
       "      <th>EVSMA_EWMA</th>\n",
       "      <th>EVSMA_delta</th>\n",
       "      <th>combined</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>3.582721e+14</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>49</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>...</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>3.582721e+14</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>50</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>...</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3.582721e+14</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>51</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>...</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>3.582721e+14</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>52</td>\n",
       "      <td>3000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>...</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>3.582721e+14</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>53</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>...</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.2</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 23 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "           IMEI  Year  Month  Day  Hour  Minute  Seconds      sp  EVVSP  \\\n",
       "0  3.582721e+14  2018     11   15    10      58       49     0.0    0.0   \n",
       "1  3.582721e+14  2018     11   15    10      58       50  1000.0    0.0   \n",
       "2  3.582721e+14  2018     11   15    10      58       51  2000.0    0.0   \n",
       "3  3.582721e+14  2018     11   15    10      58       52  3000.0    0.0   \n",
       "4  3.582721e+14  2018     11   15    10      58       53  4000.0    0.0   \n",
       "\n",
       "   EVGPO    ...     EVIRT_Min  EVDI2  EVBMI_Latest  EVBMA_Latest  EVVAC  \\\n",
       "0     10    ...           -41     20          21.5          21.5    0.0   \n",
       "1     10    ...           -41     20          21.5          21.5    0.0   \n",
       "2     10    ...           -41     20          21.5          21.5    0.0   \n",
       "3     10    ...           -41     20          21.5          21.5    0.0   \n",
       "4     10    ...           -41     20          21.5          21.5    0.0   \n",
       "\n",
       "   EVODO  EVODOH  EVSMA_EWMA  EVSMA_delta  combined  \n",
       "0    690     0.0        93.2          0.0      1617  \n",
       "1    690     0.0        93.2          0.0      1617  \n",
       "2    690     0.0        93.2          0.0      1617  \n",
       "3    690     0.0        93.2          0.0      1617  \n",
       "4    690     0.0        93.2          0.0      1617  \n",
       "\n",
       "[5 rows x 23 columns]"
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "mybucket = storage.Bucket(BUCKET_NAME)\n",
    "data_csv = mybucket.object(FOLDER_NAME + \"/\" + FILE_NAME)\n",
    "\n",
    "uri = data_csv.uri\n",
    "%gcs read --object $uri --variable data\n",
    "\n",
    "data = pd.read_csv(BytesIO(data))\n",
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [],
   "source": [
    "# setting up the parameters\n",
    "plt.rcParams[\"figure.figsize\"] = (10, 10)\n",
    "pd.set_option(\"display.max_rows\", 200)\n",
    "pd.set_option(\"display.max_columns\", 200)\n",
    "pd.set_option(\"precision\", 15)\n",
    "sns.set_style(\"darkgrid\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IMEI</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>Hour</th>\n",
       "      <th>Minute</th>\n",
       "      <th>Seconds</th>\n",
       "      <th>sp</th>\n",
       "      <th>EVVSP</th>\n",
       "      <th>EVGPO</th>\n",
       "      <th>EVOAS</th>\n",
       "      <th>EVIGM_Latest</th>\n",
       "      <th>EVCOM_Latest</th>\n",
       "      <th>EVIRT_Min</th>\n",
       "      <th>EVDI2</th>\n",
       "      <th>EVBMI_Latest</th>\n",
       "      <th>EVBMA_Latest</th>\n",
       "      <th>EVVAC</th>\n",
       "      <th>EVODO</th>\n",
       "      <th>EVODOH</th>\n",
       "      <th>EVSMA_EWMA</th>\n",
       "      <th>EVSMA_delta</th>\n",
       "      <th>combined</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>358272088716215.0</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>49</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>358272088716215.0</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>50</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>358272088716215.0</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>51</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>358272088716215.0</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>52</td>\n",
       "      <td>3000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>358272088716215.0</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>53</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>10</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                IMEI  Year  Month  Day  Hour  Minute  Seconds      sp  EVVSP  \\\n",
       "0  358272088716215.0  2018     11   15    10      58       49     0.0    0.0   \n",
       "1  358272088716215.0  2018     11   15    10      58       50  1000.0    0.0   \n",
       "2  358272088716215.0  2018     11   15    10      58       51  2000.0    0.0   \n",
       "3  358272088716215.0  2018     11   15    10      58       52  3000.0    0.0   \n",
       "4  358272088716215.0  2018     11   15    10      58       53  4000.0    0.0   \n",
       "\n",
       "   EVGPO  EVOAS  EVIGM_Latest  EVCOM_Latest  EVIRT_Min  EVDI2  EVBMI_Latest  \\\n",
       "0     10   26.0           -51           -51        -41     20          21.5   \n",
       "1     10   26.0           -51           -51        -41     20          21.5   \n",
       "2     10   26.0           -51           -51        -41     20          21.5   \n",
       "3     10   26.0           -51           -51        -41     20          21.5   \n",
       "4     10   26.0           -51           -51        -41     20          21.5   \n",
       "\n",
       "   EVBMA_Latest  EVVAC  EVODO  EVODOH          EVSMA_EWMA  EVSMA_delta  \\\n",
       "0          21.5    0.0    690     0.0  93.200000000000003          0.0   \n",
       "1          21.5    0.0    690     0.0  93.200000000000003          0.0   \n",
       "2          21.5    0.0    690     0.0  93.200000000000003          0.0   \n",
       "3          21.5    0.0    690     0.0  93.200000000000003          0.0   \n",
       "4          21.5    0.0    690     0.0  93.200000000000003          0.0   \n",
       "\n",
       "   combined  \n",
       "0      1617  \n",
       "1      1617  \n",
       "2      1617  \n",
       "3      1617  \n",
       "4      1617  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "# replacing the EVGPO values\n",
    "data[\"EVGPO\"] = data[\"EVGPO\"].map({\n",
    "  10: \"E\",\n",
    "  8: \"E\",\n",
    "  9: \"E\",\n",
    "  -1: \"E\",\n",
    "  1: \"B\"\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "data[\"EVGPO\"] = data[\"EVGPO\"].fillna(\"E\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [],
   "source": [
    "data[\"EVGPO\"] = data[\"EVGPO\"].map({\n",
    "  \"E\": 0,\n",
    "  \"B\": 1\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.preprocessing import LabelEncoder\n",
    "encoder = LabelEncoder()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [],
   "source": [
    "data[\"IMEI\"] = encoder.fit_transform(data[\"IMEI\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IMEI</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>Hour</th>\n",
       "      <th>Minute</th>\n",
       "      <th>Seconds</th>\n",
       "      <th>sp</th>\n",
       "      <th>EVVSP</th>\n",
       "      <th>EVGPO</th>\n",
       "      <th>EVOAS</th>\n",
       "      <th>EVIGM_Latest</th>\n",
       "      <th>EVCOM_Latest</th>\n",
       "      <th>EVIRT_Min</th>\n",
       "      <th>EVDI2</th>\n",
       "      <th>EVBMI_Latest</th>\n",
       "      <th>EVBMA_Latest</th>\n",
       "      <th>EVVAC</th>\n",
       "      <th>EVODO</th>\n",
       "      <th>EVODOH</th>\n",
       "      <th>EVSMA_EWMA</th>\n",
       "      <th>EVSMA_delta</th>\n",
       "      <th>combined</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>49</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>50</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>51</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>52</td>\n",
       "      <td>3000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>53</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   IMEI  Year  Month  Day  Hour  Minute  Seconds      sp  EVVSP  EVGPO  EVOAS  \\\n",
       "0     7  2018     11   15    10      58       49     0.0    0.0      0   26.0   \n",
       "1     7  2018     11   15    10      58       50  1000.0    0.0      0   26.0   \n",
       "2     7  2018     11   15    10      58       51  2000.0    0.0      0   26.0   \n",
       "3     7  2018     11   15    10      58       52  3000.0    0.0      0   26.0   \n",
       "4     7  2018     11   15    10      58       53  4000.0    0.0      0   26.0   \n",
       "\n",
       "   EVIGM_Latest  EVCOM_Latest  EVIRT_Min  EVDI2  EVBMI_Latest  EVBMA_Latest  \\\n",
       "0           -51           -51        -41     20          21.5          21.5   \n",
       "1           -51           -51        -41     20          21.5          21.5   \n",
       "2           -51           -51        -41     20          21.5          21.5   \n",
       "3           -51           -51        -41     20          21.5          21.5   \n",
       "4           -51           -51        -41     20          21.5          21.5   \n",
       "\n",
       "   EVVAC  EVODO  EVODOH          EVSMA_EWMA  EVSMA_delta  combined  \n",
       "0    0.0    690     0.0  93.200000000000003          0.0      1617  \n",
       "1    0.0    690     0.0  93.200000000000003          0.0      1617  \n",
       "2    0.0    690     0.0  93.200000000000003          0.0      1617  \n",
       "3    0.0    690     0.0  93.200000000000003          0.0      1617  \n",
       "4    0.0    690     0.0  93.200000000000003          0.0      1617  "
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [],
   "source": [
    "#data = data.drop(columns = [\"Year\", \"Month\", \"Day\", \"Hour\", \"Minute\", \"Seconds\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IMEI</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>Hour</th>\n",
       "      <th>Minute</th>\n",
       "      <th>Seconds</th>\n",
       "      <th>sp</th>\n",
       "      <th>EVVSP</th>\n",
       "      <th>EVGPO</th>\n",
       "      <th>EVOAS</th>\n",
       "      <th>EVIGM_Latest</th>\n",
       "      <th>EVCOM_Latest</th>\n",
       "      <th>EVIRT_Min</th>\n",
       "      <th>EVDI2</th>\n",
       "      <th>EVBMI_Latest</th>\n",
       "      <th>EVBMA_Latest</th>\n",
       "      <th>EVVAC</th>\n",
       "      <th>EVODO</th>\n",
       "      <th>EVODOH</th>\n",
       "      <th>EVSMA_EWMA</th>\n",
       "      <th>EVSMA_delta</th>\n",
       "      <th>combined</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>49</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>50</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>51</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>52</td>\n",
       "      <td>3000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>53</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>93.200000000000003</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   IMEI  Year  Month  Day  Hour  Minute  Seconds      sp  EVVSP  EVGPO  EVOAS  \\\n",
       "0     7  2018     11   15    10      58       49     0.0    0.0      0   26.0   \n",
       "1     7  2018     11   15    10      58       50  1000.0    0.0      0   26.0   \n",
       "2     7  2018     11   15    10      58       51  2000.0    0.0      0   26.0   \n",
       "3     7  2018     11   15    10      58       52  3000.0    0.0      0   26.0   \n",
       "4     7  2018     11   15    10      58       53  4000.0    0.0      0   26.0   \n",
       "\n",
       "   EVIGM_Latest  EVCOM_Latest  EVIRT_Min  EVDI2  EVBMI_Latest  EVBMA_Latest  \\\n",
       "0           -51           -51        -41     20          21.5          21.5   \n",
       "1           -51           -51        -41     20          21.5          21.5   \n",
       "2           -51           -51        -41     20          21.5          21.5   \n",
       "3           -51           -51        -41     20          21.5          21.5   \n",
       "4           -51           -51        -41     20          21.5          21.5   \n",
       "\n",
       "   EVVAC  EVODO  EVODOH          EVSMA_EWMA  EVSMA_delta  combined  \n",
       "0    0.0    690     0.0  93.200000000000003          0.0      1617  \n",
       "1    0.0    690     0.0  93.200000000000003          0.0      1617  \n",
       "2    0.0    690     0.0  93.200000000000003          0.0      1617  \n",
       "3    0.0    690     0.0  93.200000000000003          0.0      1617  \n",
       "4    0.0    690     0.0  93.200000000000003          0.0      1617  "
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Train Test Split"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [],
   "source": [
    "# dropping the EVSMA_EWMA column as we will train against the EVSMA_delta value\n",
    "df = data.drop(columns = [\"EVSMA_EWMA\"])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [],
   "source": [
    "# scaling the EVSMA_delta value so that it's values become more significant\n",
    "df[\"EVSMA_delta\"] = df[\"EVSMA_delta\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IMEI</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>Hour</th>\n",
       "      <th>Minute</th>\n",
       "      <th>Seconds</th>\n",
       "      <th>sp</th>\n",
       "      <th>EVVSP</th>\n",
       "      <th>EVGPO</th>\n",
       "      <th>EVOAS</th>\n",
       "      <th>EVIGM_Latest</th>\n",
       "      <th>EVCOM_Latest</th>\n",
       "      <th>EVIRT_Min</th>\n",
       "      <th>EVDI2</th>\n",
       "      <th>EVBMI_Latest</th>\n",
       "      <th>EVBMA_Latest</th>\n",
       "      <th>EVVAC</th>\n",
       "      <th>EVODO</th>\n",
       "      <th>EVODOH</th>\n",
       "      <th>EVSMA_delta</th>\n",
       "      <th>combined</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>49</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>50</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>51</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>52</td>\n",
       "      <td>3000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>7</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>10</td>\n",
       "      <td>58</td>\n",
       "      <td>53</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0</td>\n",
       "      <td>26.0</td>\n",
       "      <td>-51</td>\n",
       "      <td>-51</td>\n",
       "      <td>-41</td>\n",
       "      <td>20</td>\n",
       "      <td>21.5</td>\n",
       "      <td>21.5</td>\n",
       "      <td>0.0</td>\n",
       "      <td>690</td>\n",
       "      <td>0.0</td>\n",
       "      <td>0.0</td>\n",
       "      <td>1617</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   IMEI  Year  Month  Day  Hour  Minute  Seconds      sp  EVVSP  EVGPO  EVOAS  \\\n",
       "0     7  2018     11   15    10      58       49     0.0    0.0      0   26.0   \n",
       "1     7  2018     11   15    10      58       50  1000.0    0.0      0   26.0   \n",
       "2     7  2018     11   15    10      58       51  2000.0    0.0      0   26.0   \n",
       "3     7  2018     11   15    10      58       52  3000.0    0.0      0   26.0   \n",
       "4     7  2018     11   15    10      58       53  4000.0    0.0      0   26.0   \n",
       "\n",
       "   EVIGM_Latest  EVCOM_Latest  EVIRT_Min  EVDI2  EVBMI_Latest  EVBMA_Latest  \\\n",
       "0           -51           -51        -41     20          21.5          21.5   \n",
       "1           -51           -51        -41     20          21.5          21.5   \n",
       "2           -51           -51        -41     20          21.5          21.5   \n",
       "3           -51           -51        -41     20          21.5          21.5   \n",
       "4           -51           -51        -41     20          21.5          21.5   \n",
       "\n",
       "   EVVAC  EVODO  EVODOH  EVSMA_delta  combined  \n",
       "0    0.0    690     0.0          0.0      1617  \n",
       "1    0.0    690     0.0          0.0      1617  \n",
       "2    0.0    690     0.0          0.0      1617  \n",
       "3    0.0    690     0.0          0.0      1617  \n",
       "4    0.0    690     0.0          0.0      1617  "
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [],
   "source": [
    "# bisecting the training data\n",
    "train = df[df[\"combined\"]<1400].reset_index(drop = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "6103"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(train[train[\"EVGPO\"] == 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [],
   "source": [
    "valid = df[df[\"combined\"].between(1400, 1500, inclusive = False)].reset_index(drop = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "551"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(valid[valid[\"EVGPO\"] == 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [],
   "source": [
    "test = df[df[\"combined\"]>1500].reset_index(drop = True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "14339"
      ]
     },
     "execution_count": 24,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "len(test[test[\"EVGPO\"] == 1])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train = 3181967\n",
      "Valid = 210300\n",
      "Test = 673059\n"
     ]
    }
   ],
   "source": [
    "print(\"Train = {}\".format(len(train)))\n",
    "print(\"Valid = {}\".format(len(valid)))\n",
    "print(\"Test = {}\".format(len(test)))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [],
   "source": [
    "# trainset and testset\n",
    "x_train = train.drop(columns = [\"EVSMA_delta\"])\n",
    "y_train = train[\"EVSMA_delta\"]\n",
    "\n",
    "x_valid = valid.drop(columns = [\"EVSMA_delta\"])\n",
    "y_valid = valid[\"EVSMA_delta\"]\n",
    "\n",
    "x_test = test.drop(columns = [\"EVSMA_delta\"])\n",
    "y_test = test[\"EVSMA_delta\"]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>IMEI</th>\n",
       "      <th>Year</th>\n",
       "      <th>Month</th>\n",
       "      <th>Day</th>\n",
       "      <th>Hour</th>\n",
       "      <th>Minute</th>\n",
       "      <th>Seconds</th>\n",
       "      <th>sp</th>\n",
       "      <th>EVVSP</th>\n",
       "      <th>EVGPO</th>\n",
       "      <th>EVOAS</th>\n",
       "      <th>EVIGM_Latest</th>\n",
       "      <th>EVCOM_Latest</th>\n",
       "      <th>EVIRT_Min</th>\n",
       "      <th>EVDI2</th>\n",
       "      <th>EVBMI_Latest</th>\n",
       "      <th>EVBMA_Latest</th>\n",
       "      <th>EVVAC</th>\n",
       "      <th>EVODO</th>\n",
       "      <th>EVODOH</th>\n",
       "      <th>combined</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>39</td>\n",
       "      <td>0.0</td>\n",
       "      <td>53.250000000000000</td>\n",
       "      <td>0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>25</td>\n",
       "      <td>38</td>\n",
       "      <td>213</td>\n",
       "      <td>22</td>\n",
       "      <td>21.5</td>\n",
       "      <td>22.5</td>\n",
       "      <td>0.000000000000000</td>\n",
       "      <td>806</td>\n",
       "      <td>0.000000000000000</td>\n",
       "      <td>1272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>40</td>\n",
       "      <td>1000.0</td>\n",
       "      <td>51.492199999999997</td>\n",
       "      <td>0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>25</td>\n",
       "      <td>38</td>\n",
       "      <td>19</td>\n",
       "      <td>22</td>\n",
       "      <td>21.5</td>\n",
       "      <td>22.5</td>\n",
       "      <td>-4.882777777777787</td>\n",
       "      <td>806</td>\n",
       "      <td>0.014547527777778</td>\n",
       "      <td>1272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>4</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>41</td>\n",
       "      <td>2000.0</td>\n",
       "      <td>50.367199999999997</td>\n",
       "      <td>0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>24</td>\n",
       "      <td>38</td>\n",
       "      <td>19</td>\n",
       "      <td>22</td>\n",
       "      <td>21.5</td>\n",
       "      <td>22.5</td>\n",
       "      <td>-3.125000000000000</td>\n",
       "      <td>806</td>\n",
       "      <td>0.028694666666667</td>\n",
       "      <td>1272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>42</td>\n",
       "      <td>3000.0</td>\n",
       "      <td>48.804699999999997</td>\n",
       "      <td>0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>25</td>\n",
       "      <td>38</td>\n",
       "      <td>19</td>\n",
       "      <td>22</td>\n",
       "      <td>21.5</td>\n",
       "      <td>22.5</td>\n",
       "      <td>-4.340277777777779</td>\n",
       "      <td>806</td>\n",
       "      <td>0.042468541666667</td>\n",
       "      <td>1272</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>4</td>\n",
       "      <td>2018</td>\n",
       "      <td>11</td>\n",
       "      <td>15</td>\n",
       "      <td>7</td>\n",
       "      <td>9</td>\n",
       "      <td>43</td>\n",
       "      <td>4000.0</td>\n",
       "      <td>47.101599999999998</td>\n",
       "      <td>0</td>\n",
       "      <td>20.0</td>\n",
       "      <td>25</td>\n",
       "      <td>38</td>\n",
       "      <td>19</td>\n",
       "      <td>22</td>\n",
       "      <td>21.5</td>\n",
       "      <td>22.5</td>\n",
       "      <td>-4.730833333333331</td>\n",
       "      <td>806</td>\n",
       "      <td>0.055788861111111</td>\n",
       "      <td>1272</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   IMEI  Year  Month  Day  Hour  Minute  Seconds      sp               EVVSP  \\\n",
       "0     4  2018     11   15     7       9       39     0.0  53.250000000000000   \n",
       "1     4  2018     11   15     7       9       40  1000.0  51.492199999999997   \n",
       "2     4  2018     11   15     7       9       41  2000.0  50.367199999999997   \n",
       "3     4  2018     11   15     7       9       42  3000.0  48.804699999999997   \n",
       "4     4  2018     11   15     7       9       43  4000.0  47.101599999999998   \n",
       "\n",
       "   EVGPO  EVOAS  EVIGM_Latest  EVCOM_Latest  EVIRT_Min  EVDI2  EVBMI_Latest  \\\n",
       "0      0   20.0            25            38        213     22          21.5   \n",
       "1      0   20.0            25            38         19     22          21.5   \n",
       "2      0   20.0            24            38         19     22          21.5   \n",
       "3      0   20.0            25            38         19     22          21.5   \n",
       "4      0   20.0            25            38         19     22          21.5   \n",
       "\n",
       "   EVBMA_Latest              EVVAC  EVODO             EVODOH  combined  \n",
       "0          22.5  0.000000000000000    806  0.000000000000000      1272  \n",
       "1          22.5 -4.882777777777787    806  0.014547527777778      1272  \n",
       "2          22.5 -3.125000000000000    806  0.028694666666667      1272  \n",
       "3          22.5 -4.340277777777779    806  0.042468541666667      1272  \n",
       "4          22.5 -4.730833333333331    806  0.055788861111111      1272  "
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "540555     0.007488342965104\n",
       "2939880    0.005918603426124\n",
       "2507368    0.007896753173270\n",
       "2683830    0.004134597551939\n",
       "741093     0.007214213297274\n",
       "Name: EVSMA_delta, dtype: float64"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "y_train.sample(5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [],
   "source": [
    "# defining the parameters\n",
    "params = {\n",
    "    \"eta\":0.01,\n",
    "    \"n_estimators\": 100,\n",
    "    \"max_depth\": 6,\n",
    "    \"subsample\": 0.8,\n",
    "    \"colsample_bytree\": 1,\n",
    "    \"gamma\": 0,\n",
    "    \"eval_metric\": \"rmse\",\n",
    "    \"nthreads\": 4,\n",
    "    \"objective\": \"reg:linear\"\n",
    "    \n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [],
   "source": [
    "# converting the datasets into DMatrix, a format required by XGBoost\n",
    "dtrain = xgb.DMatrix(x_train, label = y_train)\n",
    "dvalid = xgb.DMatrix(x_valid, label = y_valid)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0]\tvalid_set-rmse:0.489406\n",
      "[1000]\tvalid_set-rmse:0.005179\n",
      "[2000]\tvalid_set-rmse:0.005015\n",
      "[3000]\tvalid_set-rmse:0.004756\n"
     ]
    }
   ],
   "source": [
    "# training the Model\n",
    "model_train = xgb.train(params, dtrain, 5000, evals = [(dvalid, \"valid_set\")], verbose_eval=1000)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "- The error is continuously increasing because the training dataset is not representative of validation dataset. We can try GridSearch and Shuffling the dataset. "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# testset DMatrix\n",
    "dtest = xgb.DMatrix(x_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "#predictions\n",
    "y_pred = model_train.predict(dtest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "y_pred"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "# making a dataframe of actual and predicted values\n",
    "result_df = pd.DataFrame({\n",
    "    \"y\": y_test,\n",
    "    \"yhat\": y_pred\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "err = (((result_df[\"y\"] - result_df[\"yhat\"])**2).mean())**0.5\n",
    "print(\"Error on First XGB Iteration = {}\".format(err))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": [
    "plt.plot(list(y_test)[300000:340000])\n",
    "plt.plot(y_pred[300000:340000])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---\n",
    "## Grid Search CV (Hyperparameter Tuning)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 46,
   "metadata": {},
   "outputs": [],
   "source": [
    "# cross-validation results\n",
    "cv_results = xgb.cv(\n",
    "    params,\n",
    "    dtrain,\n",
    "    num_boost_round = 50,\n",
    "    seed = 42,\n",
    "    nfold = 10,\n",
    "    metrics = \"rmse\",\n",
    "    early_stopping_rounds = 10\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "test-rmse-mean     0.298982100000000\n",
       "test-rmse-std      0.000004867237409\n",
       "train-rmse-mean    0.298982100000000\n",
       "train-rmse-std     0.000000458257569\n",
       "dtype: float64"
      ]
     },
     "execution_count": 47,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "cv_results.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [],
   "source": [
    "import pickle\n",
    "# save model to file\n",
    "pickle.dump(model_train, open(\"pima.pickle.dat\", \"wb\"))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/envs/py3env/lib/python3.5/site-packages/sklearn/cross_validation.py:41: DeprecationWarning: This module was deprecated in version 0.18 in favor of the model_selection module into which all the refactored classes and functions are moved. Also note that the interface of the new CV iterators are different from that of this module. This module will be removed in 0.20.\n",
      "  \"This module will be removed in 0.20.\", DeprecationWarning)\n"
     ]
    }
   ],
   "source": [
    "import pickle\n",
    "model_train=pickle.load(open('pima.pickle.dat','rb'))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [],
   "source": [
    "# defining gridsearch parameters\n",
    "gridsearch_params = [\n",
    "    (max_depth, min_child_weight)\n",
    "    for max_depth in range(3, 12)\n",
    "    for min_child_weight in range(1, 8)\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "max_depth = 3 ... min_child_weight = 1\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/usr/local/envs/py3env/lib/python3.5/site-packages/ipykernel/__main__.py:19: FutureWarning: 'argmin' is deprecated. Use 'idxmin' instead. The behavior of 'argmin' will be corrected to return the positional minimum in the future. Use 'series.values.argmin' to get the position of the minimum now.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\tRMSE 0.2989828 for 49 rounds\n",
      "max_depth = 3 ... min_child_weight = 2\n",
      "\tRMSE 0.2989828 for 49 rounds\n",
      "max_depth = 3 ... min_child_weight = 3\n",
      "\tRMSE 0.2989828 for 49 rounds\n",
      "max_depth = 3 ... min_child_weight = 4\n",
      "\tRMSE 0.2989828 for 49 rounds\n",
      "max_depth = 3 ... min_child_weight = 5\n",
      "\tRMSE 0.2989828 for 49 rounds\n",
      "max_depth = 3 ... min_child_weight = 6\n",
      "\tRMSE 0.2989828 for 49 rounds\n",
      "max_depth = 3 ... min_child_weight = 7\n",
      "\tRMSE 0.2989828 for 49 rounds\n",
      "max_depth = 4 ... min_child_weight = 1\n",
      "\tRMSE 0.2989824 for 49 rounds\n",
      "max_depth = 4 ... min_child_weight = 2\n",
      "\tRMSE 0.2989824 for 49 rounds\n",
      "max_depth = 4 ... min_child_weight = 3\n",
      "\tRMSE 0.2989824 for 49 rounds\n",
      "max_depth = 4 ... min_child_weight = 4\n",
      "\tRMSE 0.2989824 for 49 rounds\n",
      "max_depth = 4 ... min_child_weight = 5\n",
      "\tRMSE 0.2989824 for 49 rounds\n",
      "max_depth = 4 ... min_child_weight = 6\n",
      "\tRMSE 0.2989824 for 49 rounds\n",
      "max_depth = 4 ... min_child_weight = 7\n",
      "\tRMSE 0.2989824 for 49 rounds\n",
      "max_depth = 5 ... min_child_weight = 1\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 5 ... min_child_weight = 2\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 5 ... min_child_weight = 3\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 5 ... min_child_weight = 4\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 5 ... min_child_weight = 5\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 5 ... min_child_weight = 6\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 5 ... min_child_weight = 7\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 6 ... min_child_weight = 1\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 6 ... min_child_weight = 2\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 6 ... min_child_weight = 3\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 6 ... min_child_weight = 4\n",
      "\tRMSE 0.29898210000000003 for 49 rounds\n",
      "max_depth = 6 ... min_child_weight = 5\n"
     ]
    }
   ],
   "source": [
    "# running the loop which will give us best paramters based on RMSE\n",
    "min_rmse = float(\"Inf\")\n",
    "best_params = None\n",
    "for max_depth, min_child_weight in gridsearch_params:\n",
    "    print(\"max_depth = {} ... min_child_weight = {}\".format(max_depth, min_child_weight))\n",
    "    params[\"max_depth\"] = max_depth\n",
    "    params[\"min_child_weight\"] = min_child_weight\n",
    "    \n",
    "    cv_results = xgb.cv(\n",
    "        params,\n",
    "        dtrain,\n",
    "        num_boost_round = 50,\n",
    "        seed = 42,\n",
    "        nfold = 10,\n",
    "        metrics = \"rmse\",\n",
    "        early_stopping_rounds = 10\n",
    "    )\n",
    "    mean_rmse = cv_results[\"test-rmse-mean\"].min()\n",
    "    boost_rounds = cv_results[\"test-rmse-mean\"].argmin()\n",
    "    print(\"\\tRMSE {} for {} rounds\".format(mean_rmse, boost_rounds))\n",
    "    if mean_rmse < min_rmse:\n",
    "        min_rmse = mean_rmse\n",
    "        best_params = (max_depth, min_child_weight)\n",
    "        \n",
    "print(\"Best params: {} ... {}, RMSE: {}\".format(best_params[0], best_params[1], min_rmse))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [],
   "source": [
    "# repeating the exercise for other parameters\n",
    "gridsearch_params_2 = [\n",
    "    (colsample_bytree, eta)\n",
    "    for colsample_bytree in [0,1]\n",
    "    for eta in [0.01, 0.1, 0.05, 0.5, 0.02]\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "colsample_bytree = 0 ... eta = 0.01\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/CWSHPMU2316/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:18: FutureWarning: 'argmin' is deprecated, use 'idxmin' instead. The behavior of 'argmin'\n",
      "will be corrected to return the positional minimum in the future.\n",
      "Use 'series.values.argmin' to get the position of the minimum now.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\tRMSE 62.2949379 for 49 rounds\n",
      "colsample_bytree = 0 ... eta = 0.1\n",
      "\tRMSE 42.31141269999999 for 49 rounds\n",
      "colsample_bytree = 0 ... eta = 0.05\n",
      "\tRMSE 46.495300300000004 for 49 rounds\n",
      "colsample_bytree = 0 ... eta = 0.5\n",
      "\tRMSE 34.0495374 for 49 rounds\n",
      "colsample_bytree = 0 ... eta = 0.02\n",
      "\tRMSE 54.4575021 for 49 rounds\n",
      "colsample_bytree = 1 ... eta = 0.01\n",
      "\tRMSE 51.469814400000004 for 49 rounds\n",
      "colsample_bytree = 1 ... eta = 0.1\n",
      "\tRMSE 8.7462114 for 49 rounds\n",
      "colsample_bytree = 1 ... eta = 0.05\n",
      "\tRMSE 17.1712455 for 49 rounds\n",
      "colsample_bytree = 1 ... eta = 0.5\n",
      "\tRMSE 3.9894693999999995 for 49 rounds\n",
      "colsample_bytree = 1 ... eta = 0.02\n",
      "\tRMSE 35.7519722 for 49 rounds\n",
      "Best params: 1 ... 0.5, RMSE: 3.9894693999999995\n"
     ]
    }
   ],
   "source": [
    "min_rmse = float(\"Inf\")\n",
    "best_params = None\n",
    "for colsample_bytree, eta in gridsearch_params_2:\n",
    "    print(\"colsample_bytree = {} ... eta = {}\".format(colsample_bytree, eta))\n",
    "    params[\"colsample_bytree\"] = colsample_bytree\n",
    "    params[\"eta\"] = eta\n",
    "    \n",
    "    cv_results = xgb.cv(\n",
    "        params,\n",
    "        dtrain,\n",
    "        num_boost_round = 50,\n",
    "        seed = 42,\n",
    "        nfold = 10,\n",
    "        metrics = \"rmse\",\n",
    "        early_stopping_rounds = 10\n",
    "    )\n",
    "    mean_rmse = cv_results[\"test-rmse-mean\"].min()\n",
    "    boost_rounds = cv_results[\"test-rmse-mean\"].argmin()\n",
    "    print(\"\\tRMSE {} for {} rounds\".format(mean_rmse, boost_rounds))\n",
    "    if mean_rmse < min_rmse:\n",
    "        min_rmse = mean_rmse\n",
    "        best_params = (colsample_bytree, eta)\n",
    "        \n",
    "print(\"Best params: {} ... {}, RMSE: {}\".format(best_params[0], best_params[1], min_rmse))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [],
   "source": [
    "gridsearch_params_3 = [\n",
    "    (n_estimators, gamma)\n",
    "    for n_estimators in [80, 100, 150]\n",
    "    for gamma in [0, 1, 2]\n",
    "]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "n_estimators = 80 ... gamma = 0\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "/home/CWSHPMU2316/anaconda3/lib/python3.7/site-packages/ipykernel_launcher.py:18: FutureWarning: 'argmin' is deprecated, use 'idxmin' instead. The behavior of 'argmin'\n",
      "will be corrected to return the positional minimum in the future.\n",
      "Use 'series.values.argmin' to get the position of the minimum now.\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\tRMSE 35.7519722 for 49 rounds\n",
      "n_estimators = 80 ... gamma = 1\n",
      "\tRMSE 35.7520839 for 49 rounds\n",
      "n_estimators = 80 ... gamma = 2\n",
      "\tRMSE 35.75173650000001 for 49 rounds\n",
      "n_estimators = 100 ... gamma = 0\n",
      "\tRMSE 35.751973 for 49 rounds\n",
      "n_estimators = 100 ... gamma = 1\n",
      "\tRMSE 35.7520833 for 49 rounds\n",
      "n_estimators = 100 ... gamma = 2\n",
      "\tRMSE 35.7517361 for 49 rounds\n",
      "n_estimators = 150 ... gamma = 0\n",
      "\tRMSE 35.7519726 for 49 rounds\n",
      "n_estimators = 150 ... gamma = 1\n",
      "\tRMSE 35.752084 for 49 rounds\n",
      "n_estimators = 150 ... gamma = 2\n",
      "\tRMSE 35.7517349 for 49 rounds\n",
      "Best params: 150 ... 2, RMSE: 35.7517349\n"
     ]
    }
   ],
   "source": [
    "min_rmse = float(\"Inf\")\n",
    "best_params = None\n",
    "for n_estimators, gamma in gridsearch_params_3:\n",
    "    print(\"n_estimators = {} ... gamma = {}\".format(n_estimators, gamma))\n",
    "    params[\"n_estimators\"] = n_estimators\n",
    "    params[\"gamma\"] = gamma\n",
    "    \n",
    "    cv_results = xgb.cv(\n",
    "        params,\n",
    "        dtrain,\n",
    "        num_boost_round = 50,\n",
    "        seed = 42,\n",
    "        nfold = 10,\n",
    "        metrics = \"rmse\",\n",
    "        early_stopping_rounds = 10\n",
    "    )\n",
    "    mean_rmse = cv_results[\"test-rmse-mean\"].min()\n",
    "    boost_rounds = cv_results[\"test-rmse-mean\"].argmin()\n",
    "    print(\"\\tRMSE {} for {} rounds\".format(mean_rmse, boost_rounds))\n",
    "    if mean_rmse < min_rmse:\n",
    "        min_rmse = mean_rmse\n",
    "        best_params = (n_estimators, gamma)\n",
    "        \n",
    "print(\"Best params: {} ... {}, RMSE: {}\".format(best_params[0], best_params[1], min_rmse))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Training the model after First attempt at Grid Search"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 106,
   "metadata": {},
   "outputs": [],
   "source": [
    "# defining the parameters\n",
    "params = {\n",
    "    \"eta\":0.5,\n",
    "    \"n_estimators\": 150,\n",
    "    \"max_depth\": 11,\n",
    "    \"min_child_weight\": 3,\n",
    "    \"subsample\": 0.8,\n",
    "    \"colsample_bytree\": 1,\n",
    "    \"gamma\": 2,\n",
    "    \"eval_metric\": \"rmse\",\n",
    "    \"nthreads\": 4,\n",
    "    \"objective\": \"reg:linear\"\n",
    "    \n",
    "}"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 122,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[0]\tvalid_set-rmse:41.9028\n",
      "[500]\tvalid_set-rmse:57.6829\n",
      "[999]\tvalid_set-rmse:57.6601\n"
     ]
    }
   ],
   "source": [
    "model_train = xgb.train(params, dtrain, 1000, evals = [(dvalid, \"valid_set\")], verbose_eval=500)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 123,
   "metadata": {},
   "outputs": [],
   "source": [
    "dtest = xgb.DMatrix(x_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 124,
   "metadata": {},
   "outputs": [],
   "source": [
    "#predictions\n",
    "y_pred = model_train.predict(dtest)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 125,
   "metadata": {},
   "outputs": [],
   "source": [
    "# making a dataframe of actual and predicted values\n",
    "result_df = pd.DataFrame({\n",
    "    \"y\": y_test,\n",
    "    \"yhat\": y_pred\n",
    "})"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 126,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Error on Second XGB Iteration = 61.67323389123271\n"
     ]
    }
   ],
   "source": [
    "err = (((result_df[\"y\"] - result_df[\"yhat\"])**2).mean())**0.5\n",
    "print(\"Error on Second XGB Iteration = {}\".format(err))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 129,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 720x720 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.plot(result_df[\"y\"][20000:30000])\n",
    "plt.plot(result_df[\"yhat\"][20000:30000])\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 128,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>y</th>\n",
       "      <th>yhat</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>704923</th>\n",
       "      <td>19.420529</td>\n",
       "      <td>53.211880</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>746296</th>\n",
       "      <td>28.528889</td>\n",
       "      <td>37.800877</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>748421</th>\n",
       "      <td>137.985993</td>\n",
       "      <td>129.132645</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>712348</th>\n",
       "      <td>47.099433</td>\n",
       "      <td>58.987907</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>681412</th>\n",
       "      <td>44.831394</td>\n",
       "      <td>54.950222</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>675906</th>\n",
       "      <td>25.932843</td>\n",
       "      <td>33.093369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>773734</th>\n",
       "      <td>27.083569</td>\n",
       "      <td>225.085297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>724214</th>\n",
       "      <td>76.701543</td>\n",
       "      <td>100.376053</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>698239</th>\n",
       "      <td>29.513517</td>\n",
       "      <td>52.610680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>748481</th>\n",
       "      <td>112.973355</td>\n",
       "      <td>105.865540</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>680940</th>\n",
       "      <td>14.330448</td>\n",
       "      <td>64.147171</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>733984</th>\n",
       "      <td>42.182089</td>\n",
       "      <td>94.641151</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>732489</th>\n",
       "      <td>32.383931</td>\n",
       "      <td>47.904343</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>773426</th>\n",
       "      <td>75.610476</td>\n",
       "      <td>92.104256</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>683183</th>\n",
       "      <td>79.056878</td>\n",
       "      <td>71.712486</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>717175</th>\n",
       "      <td>67.220865</td>\n",
       "      <td>10.109423</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>715996</th>\n",
       "      <td>96.438343</td>\n",
       "      <td>24.451149</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>740657</th>\n",
       "      <td>78.958125</td>\n",
       "      <td>108.673080</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>684012</th>\n",
       "      <td>117.462003</td>\n",
       "      <td>116.821495</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>670521</th>\n",
       "      <td>52.009811</td>\n",
       "      <td>42.557957</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                 y        yhat\n",
       "704923   19.420529   53.211880\n",
       "746296   28.528889   37.800877\n",
       "748421  137.985993  129.132645\n",
       "712348   47.099433   58.987907\n",
       "681412   44.831394   54.950222\n",
       "675906   25.932843   33.093369\n",
       "773734   27.083569  225.085297\n",
       "724214   76.701543  100.376053\n",
       "698239   29.513517   52.610680\n",
       "748481  112.973355  105.865540\n",
       "680940   14.330448   64.147171\n",
       "733984   42.182089   94.641151\n",
       "732489   32.383931   47.904343\n",
       "773426   75.610476   92.104256\n",
       "683183   79.056878   71.712486\n",
       "717175   67.220865   10.109423\n",
       "715996   96.438343   24.451149\n",
       "740657   78.958125  108.673080\n",
       "684012  117.462003  116.821495\n",
       "670521   52.009811   42.557957"
      ]
     },
     "execution_count": 128,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "result_df.sample(20)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "---"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## CONCLUSION OF NOTEBOOK\n",
    "From the first and second iteration, we don't see any improvements.\n",
    "\n",
    "| ITERATION | RMSE |\n",
    "------------|------\n",
    "| First     | 61.33|\n",
    "| Second    | 61.80|\n",
    "\n",
    "But, after Grid Search, our model is learning the pattern better. So, that is something we can work on from here on.\n",
    "\n",
    "### Steps to be taken into consideration - \n",
    "- Use more dataset\n",
    "- Shuffling should be done\n",
    "- Use Feature Engineering and windowing functions"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.5.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
